package com.evil.application.pojo.dto.order.node.handler;

import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author liyang
 * @date 2022-08-08 00:00
 */
@Data
@NoArgsConstructor
public class QueryOrderNodeHandler {

    /**
     * 订单id
     */
    @NotNull(message = "订单id")
    private Long orderId;

    /**
     * 节点id
     */
    private Long nodeId;

    /**
     * 处理人组
     */
    private String handlerGroup;

    /**
     * 处理人-用户id
     */
    private Long handlerId;

    /**
     * 处理类型
     */
    private Integer handleType;
    private List<Integer> handleTypes;

    /**
     * 过滤已删除
     */
    private Integer isDeleted;

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId) {
        this.orderId = orderId;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Long nodeId) {
        this.orderId = orderId;
        this.nodeId = nodeId;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Integer handleType) {
        this.orderId = orderId;
        this.handleType = handleType;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Long handlerId, Integer handleType) {
        this.orderId = orderId;
        this.handlerId = handlerId;
        this.handleType = handleType;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Long nodeId, Long handlerId, Integer handleType) {
        this.orderId = orderId;
        this.nodeId = nodeId;
        this.handlerId = handlerId;
        this.handleType = handleType;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Long handlerId, List<Integer> handleTypes) {
        this.orderId = orderId;
        this.handlerId = handlerId;
        this.handleTypes = handleTypes;
    }

    public QueryOrderNodeHandler(@NotNull(message = "订单id") Long orderId, Long nodeId, String handlerGroup, Long handlerId, Integer handleType, Integer isDeleted) {
        this.orderId = orderId;
        this.nodeId = nodeId;
        this.handlerGroup = handlerGroup;
        this.handlerId = handlerId;
        this.handleType = handleType;
        this.isDeleted = isDeleted;
    }
}
